package org.puremvc.as3.fi.interfaces 
{
	import org.puremvc.as3.multicore.interfaces.IFacade;
	import org.puremvc.as3.multicore.interfaces.IObserver;

	/**
	 * @author a.fell
	 */
	public interface IInjectableFacade extends IFacade 
	{
		/**
		 * Register an <code>IObserver</code> to be notified
		 * of <code>INotifications</code> with a given name.
		 * 
		 * @param notificationName the name of the <code>INotifications</code> to notify this <code>IObserver</code> of
		 * @param observer the <code>IObserver</code> to register
		 */
		function registerObserver( notificationName:String, observer:IObserver ) : void;

		/**
		 * Remove a group of observers from the observer list for a given Notification name.
		 * <P>
		 * @param notificationName which observer list to remove from 
		 * @param notifyContext removed the observers with this object as their notifyContext
		 */
		function removeObserver( notificationName:String, notifyContext:Object ):void;
		
		
		function hasModel( ) : Boolean;
		
		function hasView() : Boolean;
		
		function hasController() : Boolean;
	}
}
